It is not uncommon for modern homes and offices to have several sophisticated computing devices with advanced processing, networking, and display capabilities. For example, digital cameras are able to send digital photos, and digital picture frames are able to receive digital photos, via wireless networks. Flat panel television displays are designed with built-in processors and networking devices for receiving, processing and displaying content from other network-enabled devices. Mobile handsets, which have traditionally been used primarily for making telephone calls, now include powerful processors, touch screen displays, location and image sensors and advanced networking capabilities for executing a variety of software applications. Many of these computing devices require significant technical knowledge and effort to configure and operate for effective use. Unfortunately, as the functionality of these computing devices increases, so too will their overall complexity.
In an environment with many network-capable devices, configuring two devices to communicate with one another, and then actually establishing a communication session can be a difficult task. In some cases, it may be difficult to even identify devices in an environment that are capable of establishing communication sessions. When a device capable of a communication session is identified, it can still be difficult to actually establish the communication session. Furthermore, because so many advanced computing devices are mobile, a device that is present in an environment at one moment may not be present at a different time. Accordingly, it may be difficult to establish a communication session with that device when it is not local.